// 血压测试数据生成脚本
const api = require('./frontend/utils/api');

// 生成随机血压值的函数
function generateRandomBloodPressure() {
  // 正常血压范围内的随机值
  const normalSystolic = Math.floor(Math.random() * 30) + 110; // 110-140之间
  const normalDiastolic = Math.floor(Math.random() * 20) + 70; // 70-90之间
  
  // 有20%的概率生成偏高或偏低的血压值以增加数据多样性
  const anomalyFactor = Math.random();
  let systolic, diastolic;
  
  if (anomalyFactor < 0.1) {
    // 偏低
    systolic = Math.floor(Math.random() * 20) + 90; // 90-110之间
    diastolic = Math.floor(Math.random() * 10) + 60; // 60-70之间
  } else if (anomalyFactor > 0.9) {
    // 偏高
    systolic = Math.floor(Math.random() * 30) + 140; // 140-170之间
    diastolic = Math.floor(Math.random() * 20) + 90; // 90-110之间
  } else {
    // 正常范围
    systolic = normalSystolic;
    diastolic = normalDiastolic;
  }
  
  return { systolic, diastolic };
}

// 生成过去30天的随机时间点
function generateRandomTimestamps(count) {
  const timestamps = [];
  const now = new Date();
  
  for (let i = 0; i < count; i++) {
    // 在过去30天内随机选择一个日期
    const daysAgo = Math.floor(Math.random() * 30);
    const date = new Date(now);
    date.setDate(now.getDate() - daysAgo);
    
    // 设置随机时间
    date.setHours(Math.floor(Math.random() * 24));
    date.setMinutes(Math.floor(Math.random() * 60));
    date.setSeconds(0);
    date.setMilliseconds(0);
    
    timestamps.push(date.toISOString());
  }
  
  // 按时间排序
  return timestamps.sort();
}

// 主函数：创建并添加30条血压记录
async function addBloodPressureTestData() {
  const count = 30; // 生成30条记录
  const timestamps = generateRandomTimestamps(count);
  
  console.log(`开始添加${count}条血压测试数据...`);
  
  for (let i = 0; i < count; i++) {
    const { systolic, diastolic } = generateRandomBloodPressure();
    const measuredAt = timestamps[i];
    
    try {
      // 创建记录数据对象
      const recordData = {
        systolic,
        diastolic,
        measuredAt,
        note: '测试数据'
      };
      
      console.log(`添加记录 #${i+1}: ${systolic}/${diastolic} mmHg，时间: ${measuredAt}`);
      
      // 正确调用API - 第一个参数是类型，第二个参数是数据对象
      await api.health.addRecord('bloodPressure', recordData);
      
      // 添加一个小延迟，避免请求过快
      await new Promise(resolve => setTimeout(resolve, 300));
      
    } catch (error) {
      console.error(`添加记录 #${i+1} 失败:`, error);
    }
  }
  
  console.log('测试数据添加完成！');
}

// 运行测试数据生成
wx.ready(function() {
  const app = getApp();
  // 确保用户已登录
  if (app.globalData.userId) {
    addBloodPressureTestData();
  } else {
    console.error('请先登录后再运行此脚本');
  }
}); 